/**
 * Ingenius-Group S.A.S
 *
 * Project: SAU
 * File: GuidelinesServiceAsync.java
 * Date: 10/03/2011
 */

package com.ingenius.sau.client.service;

import java.util.List;

import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.ingenius.sau.shared.model.guidelines.Factor;
import com.ingenius.sau.shared.model.guidelines.Feature;
import com.ingenius.sau.shared.model.guidelines.Guideline;
import com.ingenius.sau.shared.model.guidelines.Indicator;
import com.ingenius.sau.shared.util.filter.Filter;

/**
 * Class <strong>GuidelinesServiceAsync</strong>
 * 
 * @author Jesus David
 * @version 0.1
 */
public interface GuidelinesServiceAsync {

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#deleteFactor(java.lang.String)
	 */
	void deleteFactor(String id, AsyncCallback<Boolean> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#deleteFeature(java.lang.String)
	 */
	void deleteFeature(String id, AsyncCallback<Boolean> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#deleteGuideline(java.lang.String)
	 */
	void deleteGuideline(String id, AsyncCallback<Boolean> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#deleteIndicator(java.lang.String)
	 */
	void deleteIndicator(String id, AsyncCallback<Boolean> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#findFactors(java.util.List,
	 *      com.extjs.gxt.ui.client.data.BasePagingLoadConfig)
	 */
	void findFactors(List<Filter> filters, BasePagingLoadConfig config,
			AsyncCallback<PagingLoadResult<Factor>> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#findFeatures(java.util.List,
	 *      com.extjs.gxt.ui.client.data.BasePagingLoadConfig)
	 */
	void findFeatures(List<Filter> filters, BasePagingLoadConfig config,
			AsyncCallback<PagingLoadResult<Feature>> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#findGuidelines(java.util.List,
	 *      com.extjs.gxt.ui.client.data.BasePagingLoadConfig)
	 */
	void findGuidelines(List<Filter> filters, BasePagingLoadConfig config,
			AsyncCallback<PagingLoadResult<Guideline>> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#findIndicators(java.util.List,
	 *      com.extjs.gxt.ui.client.data.BasePagingLoadConfig)
	 */
	void findIndicators(List<Filter> filters, BasePagingLoadConfig config,
			AsyncCallback<PagingLoadResult<Indicator>> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#getFactor(java.lang.String)
	 */
	void getFactor(String id, AsyncCallback<Factor> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#getFeature(java.lang.String)
	 */
	void getFeature(String id, AsyncCallback<Feature> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#getGuideline(java.lang.String)
	 */
	void getGuideline(String id, AsyncCallback<Guideline> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#getIndicator(java.lang.String)
	 */
	void getIndicator(String id, AsyncCallback<Indicator> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#saveOrUpdateFactor(com.ingenius.sau.shared.model.guidelines.Factor)
	 */
	void saveOrUpdateFactor(Factor factor, AsyncCallback<Boolean> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#saveOrUpdateFeature(com.ingenius.sau.shared.model.guidelines.Feature)
	 */
	void saveOrUpdateFeature(Feature feature, AsyncCallback<Boolean> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#saveOrUpdateGuideline(com.ingenius.sau.shared.model.guidelines.Guideline)
	 */
	void saveOrUpdateGuideline(Guideline guideline,
			AsyncCallback<Boolean> callback);

	/**
	 * 
	 * @see com.ingenius.sau.client.service.GuidelinesService#saveOrUpdateIndicator(com.ingenius.sau.shared.model.guidelines.Indicator)
	 */
	void saveOrUpdateIndicator(Indicator indicator,
			AsyncCallback<Boolean> callback);

}
